#!/usr/bin/env node

const fs = require('fs')
const inquirer = require('inquirer')
const path = require('path')
const ejs = require('ejs')

// 命令交互
inquirer.prompt([
  { // 项目名称
    type: "input",
    name: "name",
    default: "my-project",
    message: "your project name"
  },
  { // 创建对应文件夹
    type: "confirm",
    name: "newFolder",
    default: "my-project",
    message: "your project folder name"
  },
]).then(answers => {
  console.log(answers)
  // 模板目录
  const tempDir = path.join(__dirname, 'templates')
  // 目标目录
  const destDir = answers.newFolder ? path.join(process.cwd(), answers.name) : process.cwd()

  // 判断文件夹是否存在
  if (!fs.existsSync(destDir)) {
    //创建新文件夹
    fs.mkdirSync(destDir)
  }

  // 从模板中读取文件
  fs.readdir(tempDir, (err, files) => {
    // 抛出错误
    if (err) throw err
    // 循环处理文件
    files.forEach(item => {
      // 通过ejs渲染文件
      ejs.renderFile(path.join(tempDir, item), answers, (err, str) => {
        if (err) throw err
        // 写入目标文件
        fs.writeFileSync(path.join(destDir, item), str)
      })
    })
  })
})
